package reversi.gui;

import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.border.EmptyBorder;

import reversi.cliente.ConexionCliente;
import reversi.cliente.controlConexion;
import reversi.xml.XmlParser;

public class PanelDeInformacionOeste extends JPanel {
	/**
	 * 
	 */
	private static final long serialVersionUID = 2711344965883703169L;
	//Almecena el xml que se enviara
	private static String mensaje="";
	XmlParser xml = new XmlParser();
	
	private static JTextField textUsuario;
	//private static JTextField textContraseña;
	private static JPasswordField textContraseña; 
	private static JTextField textEstado;
	
	private static JButton btnConectarse;
	private static JButton btnRegistrarse;
	private static JButton btnDesconectarse;
	private static JButton btnBorrarCuenta;
	
	public PanelDeInformacionOeste() {
		setBorder(new EmptyBorder(0, 25, 0, 0));
		GridBagLayout gridBagLayout = new GridBagLayout();
		gridBagLayout.columnWidths = new int[] {150, 0};
		gridBagLayout.rowHeights = new int[] {15, 15, 15, 15, 25, 30, 25, 25, 30, 0};
		gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE};
		gridBagLayout.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
		setLayout(gridBagLayout);
		
		JLabel lblUsuario = new JLabel("Usuario");
		GridBagConstraints gbc_lblUsuario = new GridBagConstraints();
		gbc_lblUsuario.insets = new Insets(0, 0, 5, 0);
		gbc_lblUsuario.gridx = 0;
		gbc_lblUsuario.gridy = 0;
		add(lblUsuario, gbc_lblUsuario);
		
		textUsuario = new JTextField();
		GridBagConstraints gbc_textUsuario = new GridBagConstraints();
		gbc_textUsuario.insets = new Insets(0, 0, 5, 0);
		gbc_textUsuario.gridx = 0;
		gbc_textUsuario.gridy = 1;
		add(textUsuario, gbc_textUsuario);
		textUsuario.setColumns(10);
		
		JLabel lblContrasea = new JLabel("Contraseña");
		lblContrasea.setVerticalAlignment(SwingConstants.TOP);
		GridBagConstraints gbc_lblContrasea = new GridBagConstraints();
		gbc_lblContrasea.insets = new Insets(0, 0, 5, 0);
		gbc_lblContrasea.gridx = 0;
		gbc_lblContrasea.gridy = 2;
		add(lblContrasea, gbc_lblContrasea);
		
		//textContraseña = new JTextField();
		textContraseña = new JPasswordField(10);
		GridBagConstraints gbc_textContraseña = new GridBagConstraints();
		gbc_textContraseña.insets = new Insets(0, 0, 5, 0);
		gbc_textContraseña.gridx = 0;
		gbc_textContraseña.gridy = 3;
		add(textContraseña, gbc_textContraseña);
		textContraseña.setColumns(10);
		
		btnRegistrarse = new JButton("REGISTRARSE");
		GridBagConstraints gbc_btnRegistrarse = new GridBagConstraints();
		gbc_btnRegistrarse.insets = new Insets(0, 0, 5, 0);
		gbc_btnRegistrarse.gridx = 0;
		gbc_btnRegistrarse.gridy = 4;
		btnRegistrarse.addMouseListener(new clickRegistrarse());
		add(btnRegistrarse, gbc_btnRegistrarse);
		
		btnConectarse = new JButton("CONECTARSE");
		GridBagConstraints gbc_btnConectarse = new GridBagConstraints();
		gbc_btnConectarse.insets = new Insets(0, 0, 5, 0);
		gbc_btnConectarse.gridx = 0;
		gbc_btnConectarse.gridy = 5;
		btnConectarse.addMouseListener(new clickConectarse());
		add(btnConectarse, gbc_btnConectarse);
		
		btnDesconectarse = new JButton("DESCONECTARSE");
		btnDesconectarse.setEnabled(false);
		GridBagConstraints gbc_btnDesconectarse = new GridBagConstraints();
		gbc_btnDesconectarse.insets = new Insets(0, 0, 5, 0);
		gbc_btnDesconectarse.gridx = 0;
		gbc_btnDesconectarse.gridy = 6;
		btnDesconectarse.addMouseListener(new clickDesconectarse());
		add(btnDesconectarse, gbc_btnDesconectarse);
		
		btnBorrarCuenta = new JButton("BORRAR CUENTA");
		btnBorrarCuenta.setEnabled(false);
		GridBagConstraints gbc_btnBorrarCuenta = new GridBagConstraints();
		gbc_btnBorrarCuenta.insets = new Insets(0, 0, 5, 0);
		gbc_btnBorrarCuenta.gridx = 0;
		gbc_btnBorrarCuenta.gridy = 7;
		btnBorrarCuenta.addMouseListener(new clickBorrarCuenta());
		add(btnBorrarCuenta, gbc_btnBorrarCuenta);
		
		JLabel lblEstado = new JLabel("Estado");
		GridBagConstraints gbc_lblEstado = new GridBagConstraints();
		gbc_lblEstado.insets = new Insets(0, 0, 5, 0);
		gbc_lblEstado.gridx = 0;
		gbc_lblEstado.gridy = 8;
		add(lblEstado, gbc_lblEstado);
		
		textEstado = new JTextField();
		textEstado.setEditable(false);
		GridBagConstraints gbc_textEstado = new GridBagConstraints();
		gbc_textEstado.gridx = 0;
		gbc_textEstado.gridy = 9;
		textEstado.setText("DESCONECTADO");
		add(textEstado, gbc_textEstado);
		textEstado.setColumns(10);
	}
	
	public static String getMensaje(){
		return mensaje;
	}
	/*public static void setConectado(){
		textEstado.setText("CONECTADO");
	}*/
	
	//Cuando se hace click en el boton CONECTAR
	public class clickConectarse extends MouseAdapter {
		@SuppressWarnings("deprecation")
		public void mouseClicked(MouseEvent e){
			mensaje=xml.crearXml( "conectarse",
								textUsuario.getText(), 
								textContraseña.getText() );
			new ConexionCliente();
			controlConexion.enviar(mensaje);
			
		}
	}
	
	//Cuando se hace click en el boton Registrarse
		public class clickRegistrarse extends MouseAdapter {
			@SuppressWarnings("deprecation")
			public void mouseClicked(MouseEvent e){
				mensaje=xml.crearXml( "registrarse",
									textUsuario.getText(), 
									textContraseña.getText() );
				new ConexionCliente();
				controlConexion.enviar(mensaje);
			}
		}

	//Cuando se hace click en el boton Borrar Cuenta
			public class clickBorrarCuenta extends MouseAdapter {
				public void mouseClicked(MouseEvent e){
					mensaje=xml.crearXml( "borrar",
										textUsuario.getText(), 
										" " );
					btnConectarse.setEnabled(true);
					btnRegistrarse.setEnabled(true);
					btnDesconectarse.setEnabled(false);
					btnBorrarCuenta.setEnabled(false);
					controlConexion.enviar(mensaje);
				}
			}
		
	//Cuando se hace click en el boton DESCONECTAR
	public class clickDesconectarse extends MouseAdapter {
		public void mouseClicked(MouseEvent e){
			//Cerrar la conexion con el servidor
			mensaje=xml.crearXml( "desconectarse",textUsuario.getText());
			/*btnConectarse.setEnabled(true);
			btnRegistrarse.setEnabled(true);
			btnDesconectarse.setEnabled(false);*/
			controlConexion.enviar(mensaje);
			
		}
	}
	public static void deshabilitarPanelOeste(){
		textEstado.setText("CONECTADO");
		btnConectarse.setEnabled(false);
		btnRegistrarse.setEnabled(false);
		btnDesconectarse.setEnabled(true);
		btnBorrarCuenta.setEnabled(true);
		textUsuario.setEnabled(false);
		textContraseña.setEnabled(false);
		PanelDeInformacionEste.habilitarPanelEste();
		
	}
	public static void habilitarPanelOeste(){
		textEstado.setText("DESCONECTADO");
		btnConectarse.setEnabled(true);
		btnRegistrarse.setEnabled(true);
		btnDesconectarse.setEnabled(false);
		btnBorrarCuenta.setEnabled(false);
		textUsuario.setEnabled(true);
		textUsuario.setText("");
		textContraseña.setEnabled(true);
		textContraseña.setText("");
		PanelDeInformacionEste.deshabilitarPanelEste();
		
	}
	public static String getUsuario(){
		return textUsuario.getText();
	}
}
